package com.yxhl.zoume.data.http.repository.busticket;

import com.yxhl.protobuf.BizOrderRequest;
import com.yxhl.protobuf.BizOrderResponse;
import com.yxhl.protobuf.IsFerryRequest;
import com.yxhl.protobuf.IsFerryResponse;
import com.yxhl.protobuf.OneYxBusInfoRequest;
import com.yxhl.protobuf.OneYxBusInfoResponse;
import com.yxhl.protobuf.PubEndStationRequest;
import com.yxhl.protobuf.PubEndStationResponse;
import com.yxhl.protobuf.PubLockTicketRequest;
import com.yxhl.protobuf.PubLockTicketResponse;
import com.yxhl.protobuf.PubStartCityRequest;
import com.yxhl.protobuf.PubStartCityResponse;
import com.yxhl.protobuf.YxScheduleRequest;
import com.yxhl.protobuf.YxScheduleResponse;

import retrofit2.http.Body;
import rx.Observable;

/**
 * 巴士车票
 * Created by Xboy on 16/3/16.
 */
public interface BusTicketRepository {

    /**
     * 获取出发城市信息
     *
     * @param param
     * @return
     */
    Observable<PubStartCityResponse> getStartCities(@Body PubStartCityRequest param);

    /**
     * 获取到达城市信息
     *
     * @param param
     * @return
     */
    Observable<PubEndStationResponse> getArrivalCities(@Body PubEndStationRequest param);

    /**
     * 获取巴士车票列表/班次信息
     *
     * @param param
     * @return
     */
    Observable<YxScheduleResponse> getBusServices(@Body YxScheduleRequest param);

    /**
     * 获取巴士车票详情
     *
     * @param param
     * @return
     */
    Observable<OneYxBusInfoResponse> getBusTicketDetail(@Body OneYxBusInfoRequest param);

    /**
     * 获取定制巴士车票详情
     *
     * @param param
     * @return
     */
    Observable<OneYxBusInfoResponse> getZouMeBusDetail(@Body OneYxBusInfoRequest param);

    /**
     * 是否需要接驳车
     *
     * @param param
     * @return
     */
    Observable<IsFerryResponse> checkIsNeedShuttle(@Body IsFerryRequest param);

    /**
     * 巴士车票锁票
     *
     * @param param
     * @return
     */
    Observable<PubLockTicketResponse> lockTickets(@Body PubLockTicketRequest param);

    /**
     * 定制巴士确认订单
     *
     * @param param
     * @return
     */
    Observable<BizOrderResponse> generateZouMeBusOrder(@Body BizOrderRequest param);

    /**
     * 固定时刻类巴士确认订单
     *
     * @param param
     * @return
     */
    Observable<BizOrderResponse> generateSetTimeBusOrder(@Body BizOrderRequest param);
}
